package com.cws.model;

import java.io.Serializable;

public class PageBean implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 缺省的分页条数*/
    public static final int DEFAULT_PAGE_SIZE = 20;

    /** 当前页*/
    private int page;

    /** 当前页显示记录条数*/
    private int pageSize;

    /** 取得查询总记录数 */
    private int count;

    /** 当前页面的参数*/
    private String currentPageParams;

    /** 当前页面路径 */
    private String currentPageUrl;

    public PageBean() {
        this(1, DEFAULT_PAGE_SIZE);
    }

    /**
     * @param page 当前显示页号
     * @param pageSize 当前页显示记录条数     */
    public PageBean(int page, int pageSize) {
        this.page = (page <= 0) ? 1 : page;
        this.pageSize = (pageSize <= 0) ? DEFAULT_PAGE_SIZE : pageSize;
    }

    /**
     * 取得当前显示页号
     * 
     * @return 当前显示页号
     */
    public int getPage() {
        return (page <= 0) ? 1 : page;
    }

    /**
     * 设置当前页     * 
     * @param page 当前页     */
    public void setPage(int page) {
        this.page = page;
    }

    /**
     * 取得当前显示页号显示条数
     * 
     * @return 当前显示页号显示条数
     */
    public int getPageSize() {
        return (pageSize <= 0) ? DEFAULT_PAGE_SIZE : pageSize;
    }

    /**
     * 设置当前页显示记录条数     * 
     * @param pageSize 当前页显示记录条数     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /**
     * 取得查询取得记录总数
     * 
     * @return 取得查询取得记录总数
     */
    public int getCount() {
        return count;
    }

    /**
     * 设置查询取得记录总数
     * 
     * @param count 查询取得记录总数
     */
    public void setCount(int count) {
        this.count = (count < 0) ? 0 : count;

        if (this.count == 0) {
            this.page = 0;
        }
    }

    /**
     * 取得当前查询总页数     * 
     * @return 当前查询总页数     */
    public int getPages() {
        return getPageSize() == -1 ? 1 : (count + getPageSize() - 1) / getPageSize();
    }

    /**
     * 取得起始显示记录数     * 
     * @return 起始显示记录数     */
    public int getStartNo() {
        return ((getPage() - 1) * getPageSize() + 1);
    }

    /**
     * 取得结束显示记录数     * 
     * @return 结束显示记录数     */
    public int getEndNo() {
        return Math.min(getPage() * getPageSize(), count);
    }

    /**
     * 取得前一显示页码
     * 
     * @return 前一显示页码
     */
    public int getPrePageNo() {
        return Math.max(getPage() - 1, 1);
    }

    /**
     * 取得后一显示页码
     * 
     * @return 后一显示页码
     */
    public int getNextPageNo() {
        return Math.min(getPage() + 1, getPages());
    }

    /**
     * 取得传入当前页面的参数，格式为 name1=value1&name2=value2
     * 
     * @return String
     */
    public String getCurrentPageParams() {
        return currentPageParams;
    }

    /**
     * 设置传入当前页面的参数，格式为 name1=value1&name2=value2
     * 
     * @param currentPageParams 当前页查询参数，供翻页时传回
     */
    public void setCurrentPageParams(String currentPageParams) {
        this.currentPageParams = currentPageParams;
    }

    public String getCurrentPageUrl() {
        return currentPageUrl;
    }

    public void setCurrentPageUrl(String currentPageUrl) {
        this.currentPageUrl = currentPageUrl;
    }
}